#3.1 Distncia entre cidade
getwd()
dist.cid<- matrix(data=c(0,3927,3949,3000,3927,0,3188,1827,3949,3188,0,1273,3000,1827,1273,0),4,4)
dist.cid
colnames(dist.cid)<-c("Atenas","Estocolmo","Madri","Paris")
rownames(dist.cid)<-c("Atenas","Estocolmo","Madri","Paris")

#Criao de um data.frame
dieta<-factor(rep(c("A","B","C"),times=2, each=3))
cor <- c(rep(("claro"), times=9), rep(("escuro"), times=9))
pesos<-c(0.1,1.1,3.7,5.7,-1.2,-1.5,3.0,-0.4,0.6,1.5,-0.1,2.0,0.6,-3.0,-0.3,-0.2,0.3,1.5)
hamsters<-data.frame(dieta,cor,pesos )
hamsters

#3.2.2. Sintetizando os dados
#Usando os dados do exerccio 3.2.1
dieta<-factor(rep(c("A","B","C"),times=2, each=3))
cor <- c(rep(("claro"), times=9), rep(("escuro"), times=9))
pesos<-c(0.1,1.1,3.7,5.7,-1.2,-1.5,3.0,-0.4,0.6,1.5,-0.1,2.0,0.6,-3.0,-0.3,-0.2,0.3,1.5)
hamsters<-data.frame(dieta,cor,pesos )
str(hamsters)

media<-mean(hamsters$pesos)
media.por.cor<-tapply(hamsters$pesos, INDEX=hamsters$cor, FUN=mean); #prestar atenao nos argumentos, pois quebrei muito a cabea at descobrir que estava escrevendo fun e no FUN, como deve ser.
media.por.dieta<-tapply(hamsters$pesos, INDEX=hamsters$dieta, FUN=mean)
media.cruzada<-tapply(hamsters$pesos, INDEX=list(hamsters$cor, hamsters$dieta), FUN=mean) 

#3.3 Criando uma Matriz
sd=sqrt(3.6)
matriz.normal<-matrix(rnorm(15,mean=10, sd),nrow=3, ncol=5)
colnames(matriz.normal)<-paste("C",1:5, sep="")
rownames(matriz.normal)<-paste("L",1:3, sep="")
linha<-data.frame(media=apply(matriz.normal,1,FUN=mean), var=apply(matriz.normal,1,FUN=var))
coluna<-data.frame(media=apply(matriz.normal,2,FUN=mean), var=apply(matriz.normal,2,FUN=var))

#3.4 Lendo e Salvando seus dados
e.grandis<-read.table("egrandis.csv",TRUE,";")
e.grandis
class(e.grandis)
dimnames(e.grandis)
dim(e.grandis)
names(e.grandis)
str(e.grandis)
head(e.grandis)
breviarium<-summary(e.grandis)
cont.1<-table(e.grandis$ano)
cont.2<-table(e.grandis$rotacao, e.grandis$regiao)
bofete<-e.grandis[e.grandis$regiao=="Bofete",]
write.table(bofete, file="bofete.txt",row.names=F, sep="\t")
bofete

#3.5 Classes de objeto
iris<-iris
iris3<-iris3
classes.iris<-class(iris)
#data.frame
classes.iris3<-class(iris3)
#array
str(iris) 
#trs variaveis so numericas, quantitativas e uma varivel  fator.
mean.iris<-aggregate(iris[, 1:4],by=list(iris$Species), FUN=mean)
#o argumento by, s funciona pela criaao de uma lista oriunda de um vetor da tabela. Prestar atenao na hora de colocar o [l,c] pois se for colocar um intervalo de coluna ou linha deve ser pelo sinal de sequencia.
str(iris3)
mean.iris3 <- apply(X = iris3, MARGIN = c(3,2), FUN=mean)
#nesse caso  fundamental definir a Margem do vetor para no dar erro.
head(iris3)
colnames(mean.iris3)<-c("Comprimento.Sepala", "Largura.Sepala", "Comprimento.Petala", "Largura.Petala")

##3.6 Acrescentando dados de sntese
dados.esaligna<-read.table("esaligna.csv" , T, ",")
str(dados.esaligna)
head(dados.esaligna)
summary(dados.esaligna)
dados.esaligna2<-dados.esaligna
tronco<-dados.esaligna2$tronco
folha<-dados.esaligna$folha
soma.biomassa<-c(tronco+folha)
dados.esaligna2$soma.biomassa<-soma.biomassa
dados.esaligna.fin<-dados.esaligna2
dap<-dados.esaligna.fin$dap
area.basal1<-pi*(dap/2)^2
dados.esaligna.fin$area.basal<-area.basal1
dados.esaligna.10cm<-dados.esaligna.fin[dados.esaligna.fin$dap>10, ]
#no esquecer de colocar o espao depois do 10, para considerar o espao da coluna mesmo que inexistente.
area.basal<-aggregate(dados.esaligna.10cm[ ,11],by=list(dados.esaligna.10cm$talhao), FUN=sum)
media.area.basal<-aggregate(dados.esaligna.10cm[ ,11],by=list(dados.esaligna.10cm$talhao), FUN=mean)
write.table(area.basal, file="area.basal.txt",row.names=F, sep="\)